<?php

/**
 * ECMall: rss 类库
 * ============================================================================
 * 版权所有 (C) 2005-2008 上海商派网络科技有限公司，并保留所有权利。
 * 网站地址: http://www.shopex.cn
 * -------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * $Id: rss.lib.php 7634 2009-04-30 03:25:46Z yelin $
 */

if (!defined('IN_ECM')) {
	die('Hacking attempt');
}

/*-----------------------------------------------------------------------*/
// @package RSSBuilder
// @category FLP
/*-----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
// Abstract class for getting ini preferences
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc Abstract class for the RSS classes
// @access protected
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @global array $GLOBALS['_TICKER_ini_settings']
// @abstract
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/

class RSSBase {
	/*-----------------------*/
	/* C O N S T R U C T O R */
	/*-----------------------*/

	//-------------------------------------------------
	// Constructor
	//-------------------------------------------------
	// @desc Constructor
	// @return (void)
	// @access private
	//-------------------------------------------------
	function RSSBase() {
	} // end constructor

} // end class RSSBase

//---------------------------------------------------------------------------

/*-----------------------------------------------------------------------*/
// Class for creating a RSS file
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc Class for creating a RSS file
// @access public
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @example rss_sample_script.php Sample script
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/
class RSSBuilder extends RSSBase {
	/*-----------------------------------------------------------------------*/
	/* V A R I A B L E S
    /*-----------------------------------------------------------------------*/

	//-------------------------------------------------
	// encoding of the XML file
	//-------------------------------------------------
	// @desc encoding of the XML file
	// @var string
	// @access private
	//-------------------------------------------------
	var $encoding;

	//-------------------------------------------------
	// URL where the RSS document will be made available
	//-------------------------------------------------
	// @desc URL where the RSS document will be made available
	// @var string
	// @access private
	//-------------------------------------------------
	var $about;

	//-------------------------------------------------
	// title of the rss stream
	//-------------------------------------------------
	// @desc title of the rss stream
	// @var string
	// @access private
	//-------------------------------------------------
	var $title;

	//-------------------------------------------------
	// description of the rss stream
	//-------------------------------------------------
	// @desc description of the rss stream
	// @var string
	// @access private
	//-------------------------------------------------
	var $description;

	//-------------------------------------------------
	// publisher of the rss stream (person, an organization, or a service)
	//-------------------------------------------------
	// @desc publisher of the rss stream
	// @var string
	// @access private
	//-------------------------------------------------
	var $publisher;

	//-------------------------------------------------
	// creator of the rss stream (person, an organization, or a service)
	//-------------------------------------------------
	// @desc creator of the rss stream
	// @var string
	// @access private
	//-------------------------------------------------
	var $creator;

	//-------------------------------------------------
	// creation date of the file (format: 2003-05-29T00:03:07+0200)
	//-------------------------------------------------
	// @desc creation date of the file (format: 2003-05-29T00:03:07+0200)
	// @var string
	// @access private
	//-------------------------------------------------
	var $date;

	//-------------------------------------------------
	// iso format language
	//-------------------------------------------------
	// @desc iso format language
	// @var string
	// @access private
	//-------------------------------------------------
	var $language;

	//-------------------------------------------------
	// copyrights for the rss stream
	//-------------------------------------------------
	// @desc copyrights for the rss stream
	// @var string
	// @access private
	//-------------------------------------------------
	var $rights;

	//-------------------------------------------------
	// URL to an small image
	//-------------------------------------------------
	// @desc URL to an small image
	// @var string
	// @access private
	//-------------------------------------------------
	var $image_link;

	//-------------------------------------------------
	// spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
	//-------------------------------------------------
	// @desc spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
	// @var string
	// @access private
	//-------------------------------------------------
	var $coverage;

	//-------------------------------------------------
	// person, an organization, or a service
	//-------------------------------------------------
	// @desc person, an organization, or a service
	// @var string
	// @access private
	//-------------------------------------------------
	var $contributor;

	//-------------------------------------------------
	// 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
	//-------------------------------------------------
	// @desc 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
	// @var string
	// @access private
	//-------------------------------------------------
	var $period;

	//-------------------------------------------------
	// every X hours/days/weeks/...
	//-------------------------------------------------
	// @desc every X hours/days/weeks/...
	// @var int
	// @access private
	//-------------------------------------------------
	var $frequency;

	//-------------------------------------------------
	// date (format: 2003-05-29T00:03:07+0200)
	//-------------------------------------------------
	// Defines a base date to be used in concert with updatePeriod and
	// updateFrequency to calculate the publishing schedule.
	//-------------------------------------------------
	// @desc base date to calculate from (format: 2003-05-29T00:03:07+0200)
	// @var string
	// @access private
	//-------------------------------------------------
	var $base;

	//-------------------------------------------------
	// category (rss 2.0)
	//-------------------------------------------------
	// @desc category (rss 2.0)
	// @var string
	// @access private
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	var $category;

	//-------------------------------------------------
	// caching time in minutes (rss 2.0)
	//-------------------------------------------------
	// @desc caching time in minutes (rss 2.0)
	// @var int
	// @access private
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	var $cache;

	//-------------------------------------------------
	// array wich all the rss items
	//-------------------------------------------------
	// @desc array wich all the rss items
	// @var array
	// @access private
	//-------------------------------------------------
	var $items = array();

	//-------------------------------------------------
	// compiled outputstring
	//-------------------------------------------------
	// @desc compiled outputstring
	// @var string
	// @access private
	//-------------------------------------------------
	var $output;

	//-------------------------------------------------
	// use DC data
	//-------------------------------------------------
	// @desc use DC data
	// @var boolean
	// @access private
	//-------------------------------------------------
	var $use_dc_data = false;

	//-------------------------------------------------
	// use SY data
	//-------------------------------------------------
	// @desc use SY data
	// @var boolean
	// @access private
	//-------------------------------------------------
	var $use_sy_data = false;

	/*-----------------------*/
	/* C O N S T R U C T O R */
	/*-----------------------*/

	//-------------------------------------------------
	// Constructor
	//-------------------------------------------------
	// @desc Constructor
	// @param (string) $encoding  encoding of the xml file
	// @param (string) $about  URL where the RSS document will be made available
	// @param (string) $title
	// @param (string) $description
	// @param (string) $image_link  URL
	// @return (void)
	// @uses setEncoding(), setAbout(), setTitle(), setDescription(), setImageLink(), setCategory(), setCache()
	// @access private
	//-------------------------------------------------
	function RSSBuilder($encoding = '',
		$about = '',
		$title = '',
		$description = '',
		$image_link = '',
		$category = '',
		$cache = '') {
		$this->setEncoding($encoding);
		$this->setAbout($about);
		$this->setTitle($title);
		$this->setDescription($description);
		$this->setImageLink($image_link);
		$this->setCategory($category);
		$this->setCache($cache);
	} // end constructor

	/*-----------------------------------------------------------------------*/
	/* F U N C T I O N S */
	/*-----------------------------------------------------------------------*/

	//-------------------------------------------------
	// add additional DC data
	//-------------------------------------------------
	// @desc add additional DC data
	// @param (string) $publisher person, an organization, or a service
	// @param (string) $creator person, an organization, or a service
	// @param (string) $date  format: 2003-05-29T00:03:07+0200
	// @param (string) $language  iso-format
	// @param (string) $rights  copyright information
	// @param (string) $coverage  spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
	// @param (string) $contributor  person, an organization, or a service
	// @return (void)
	// @uses setPublisher(), setCreator(), setDate(), setLanguage(), setRights(), setCoverage(), setContributor()
	// @access public
	//-------------------------------------------------
	function addDCdata($publisher = '',
		$creator = '',
		$date = '',
		$language = '',
		$rights = '',
		$coverage = '',
		$contributor = '') {
		$this->setPublisher($publisher);
		$this->setCreator($creator);
		$this->setDate($date);
		$this->setLanguage($language);
		$this->setRights($rights);
		$this->setCoverage($coverage);
		$this->setContributor($contributor);
		$this->use_dc_data = (boolean) true;
	} // end function

	//-------------------------------------------------
	// add additional SY data
	//-------------------------------------------------
	// @desc add additional DC data
	// @param (string) $period  'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
	// @param (int) $frequency  every x hours/days/weeks/...
	// @param (string) $base  format: 2003-05-29T00:03:07+0200
	// @return (void)
	// @uses setPeriod(), setFrequency(), setBase()
	// @access public
	//-------------------------------------------------
	function addSYdata($period = '', $frequency = '', $base = '') {
		$this->setPeriod($period);
		$this->setFrequency($frequency);
		$this->setBase($base);
		$this->use_sy_data = (boolean) true;
	} // end function

	//-------------------------------------------------
	// Checks if a given string is a valid iso-language-code
	//-------------------------------------------------
	// @desc Checks if a given string is a valid iso-language-code
	// @param (string) $code  String that should validated
	// @return (boolean) $isvalid  If string is valid or not
	// @access public
	// @static
	//-------------------------------------------------
	function isValidLanguageCode($code = '') {
		return (boolean) ((preg_match('(^([a-zA-Z]{2})$)', $code) > 0) ? true : false);
	} // end function

	//-------------------------------------------------
	// Sets $encoding variable
	//-------------------------------------------------
	// @desc Sets $encoding variable
	// @param (string) $encoding  encoding of the xml file
	// @return (void)
	// @access private
	// @see $encoding
	//-------------------------------------------------
	function setEncoding($encoding = '') {
		if (!isset($this->encoding)) {
			$this->encoding = (string) ((strlen(trim($encoding)) > 0) ? trim($encoding) : 'UTF-8');
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $about variable
	//-------------------------------------------------
	// @desc Sets $about variable
	// @param (string) $about
	// @return (void)
	// @access private
	// @see $about
	//-------------------------------------------------
	function setAbout($about = '') {
		if (!isset($this->about) && strlen(trim($about)) > 0) {
			$this->about = (string) trim($about);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $title variable
	//-------------------------------------------------
	// @desc Sets $title variable
	// @param (string) $title
	// @return (void)
	// @access private
	// @see $title
	//-------------------------------------------------
	function setTitle($title = '') {
		if (!isset($this->title) && strlen(trim($title)) > 0) {
			$this->title = (string) trim($title);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $description variable
	//-------------------------------------------------
	// @desc Sets $description variable
	// @param (string) $description
	// @return (void)
	// @access private
	// @see $description
	//-------------------------------------------------
	function setDescription($description = '') {
		if (!isset($this->description) && strlen(trim($description)) > 0) {
			$this->description = (string) trim($description);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $publisher variable
	//-------------------------------------------------
	// @desc Sets $publisher variable
	// @param (string) $publisher
	// @return (void)
	// @access private
	// @see $publisher
	//-------------------------------------------------
	function setPublisher($publisher = '') {
		if (!isset($this->publisher) && strlen(trim($publisher)) > 0) {
			$this->publisher = (string) trim($publisher);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $creator variable
	//-------------------------------------------------
	// @desc Sets $creator variable
	// @param (string) $creator
	// @return (void)
	// @access private
	// @see $creator
	//-------------------------------------------------
	function setCreator($creator = '') {
		if (!isset($this->creator) && strlen(trim($creator)) > 0) {
			$this->creator = (string) trim($creator);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $date variable
	//-------------------------------------------------
	// @desc Sets $date variable
	// @param (string) $date  format: 2003-05-29T00:03:07+0200
	// @return (void)
	// @access private
	// @see $date
	//-------------------------------------------------
	function setDate($date = '') {
		if (!isset($this->date) && strlen(trim($date)) > 0) {
			$this->date = (string) trim($date);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $language variable
	//-------------------------------------------------
	// @desc Sets $language variable
	// @param (string) $language
	// @return (void)
	// @access private
	// @see $language
	// @uses isValidLanguageCode()
	//-------------------------------------------------
	function setLanguage($language = '') {
		if (!isset($this->language) && $this->isValidLanguageCode($language) === true) {
			$this->language = (string) trim($language);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $rights variable
	//-------------------------------------------------
	// @desc Sets $rights variable
	// @param (string) $rights
	// @return (void)
	// @access private
	// @see $rights
	//-------------------------------------------------
	function setRights($rights = '') {
		if (!isset($this->rights) && strlen(trim($rights)) > 0) {
			$this->rights = (string) trim($rights);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $coverage variable
	//-------------------------------------------------
	// @desc Sets $coverage variable
	// @param (string) $coverage
	// @return (void)
	// @access private
	// @see $coverage
	//-------------------------------------------------
	function setCoverage($coverage = '') {
		if (!isset($this->coverage) && strlen(trim($coverage)) > 0) {
			$this->coverage = (string) trim($coverage);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $contributor variable
	//-------------------------------------------------
	// @desc Sets $contributor variable
	// @param (string) $contributor
	// @return (void)
	// @access private
	// @see $contributor
	//-------------------------------------------------
	function setContributor($contributor = '') {
		if (!isset($this->contributor) && strlen(trim($contributor)) > 0) {
			$this->contributor = (string) trim($contributor);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $image_link variable
	//-------------------------------------------------
	// @desc Sets $image_link variable
	// @param (string) $image_link
	// @return (void)
	// @access private
	// @see $image_link
	//-------------------------------------------------
	function setImageLink($image_link = '') {
		if (!isset($this->image_link) && strlen(trim($image_link)) > 0) {
			$this->image_link = (string) trim($image_link);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $period variable
	//-------------------------------------------------
	// @desc Sets $period variable
	// @param (string) $period  'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
	// @return (void)
	// @access private
	// @see $period
	//-------------------------------------------------
	function setPeriod($period = '') {
		if (!isset($this->period) && strlen(trim($period)) > 0) {
			switch ($period) {
			case 'hourly':
			case 'daily':
			case 'weekly':
			case 'monthly':
			case 'yearly':
				$this->period = (string) trim($period);
				break;
			default:
				$this->period = (string) '';
				break;
			} // end switch
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $frequency variable
	//-------------------------------------------------
	// @desc Sets $frequency variable
	// @param (int) $frequency
	// @return (void)
	// @access private
	// @see $frequency
	//-------------------------------------------------
	function setFrequency($frequency = '') {
		if (!isset($this->frequency) && strlen(trim($frequency)) > 0) {
			$this->frequency = (int) $frequency;
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $base variable
	//-------------------------------------------------
	// @desc Sets $base variable
	// @param (string) $base
	// @return (void)
	// @access private
	// @see $base
	//-------------------------------------------------
	function setBase($base = '') {
		if (!isset($this->base) && strlen(trim($base)) > 0) {
			$this->base = (string) trim($base);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $category variable
	//-------------------------------------------------
	// @desc Sets $category variable
	// @param (string) $category
	// @return (void)
	// @access private
	// @see $category
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function setCategory($category = '') {
		if (strlen(trim($category)) > 0) {
			$this->category = (string) trim($category);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $cache variable
	//-------------------------------------------------
	// @desc Sets $cache variable
	// @param (int) $cache
	// @return (void)
	// @access private
	// @see $cache
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function setCache($cache = '') {
		if (strlen(trim($cache)) > 0) {
			$this->cache = (int) $cache;
		} // end if
	} // end function

	//-------------------------------------------------
	// Returns $encoding variable
	//-------------------------------------------------
	// @desc Returns $encoding variable
	// @return (string) $encoding
	// @access public
	// @see $image_link
	//-------------------------------------------------
	function getEncoding() {
		return (string) $this->encoding;
	} // end function

	//-------------------------------------------------
	// Returns $about variable
	//-------------------------------------------------
	// @desc Returns $about variable
	// @return (string) $about
	// @access public
	// @see $about
	//-------------------------------------------------
	function getAbout() {
		return (string) $this->about;
	} // end function

	//-------------------------------------------------
	// Returns $title variable
	//-------------------------------------------------
	// @desc Returns $title variable
	// @return (string) $title
	// @access public
	// @see $title
	//-------------------------------------------------
	function getTitle() {
		return (string) $this->title;
	} // end function

	//-------------------------------------------------
	// Returns $description variable
	//-------------------------------------------------
	// @desc Returns $description variable
	// @return (string) $description
	// @access public
	// @see $description
	//-------------------------------------------------
	function getDescription() {
		return (string) $this->description;
	} // end function

	//-------------------------------------------------
	// Returns $publisher variable
	//-------------------------------------------------
	// @desc Returns $publisher variable
	// @return (string) $publisher
	// @access public
	// @see $publisher
	//-------------------------------------------------
	function getPublisher() {
		return (string) $this->publisher;
	} // end function

	//-------------------------------------------------
	// Returns $creator variable
	//-------------------------------------------------
	// @desc Returns $creator variable
	// @return (string) $creator
	// @access public
	// @see $creator
	//-------------------------------------------------
	function getCreator() {
		return (string) $this->creator;
	} // end function

	//-------------------------------------------------
	// Returns $date variable
	//-------------------------------------------------
	// @desc Returns $date variable
	// @return (string) $date
	// @access public
	// @see $date
	//-------------------------------------------------
	function getDate() {
		return (string) $this->date;
	} // end function

	//-------------------------------------------------
	// Returns $language variable
	//-------------------------------------------------
	// @desc Returns $language variable
	// @return (string) $language
	// @access public
	// @see $language
	//-------------------------------------------------
	function getLanguage() {
		return (string) $this->language;
	} // end function

	//-------------------------------------------------
	// Returns $rights variable
	//-------------------------------------------------
	// @desc Returns $rights variable
	// @return (string) $rights
	// @access public
	// @see $rights
	//-------------------------------------------------
	function getRights() {
		return (string) $this->rights;
	} // end function

	//-------------------------------------------------
	// Returns $coverage variable
	//-------------------------------------------------
	// @desc Returns $coverage variable
	// @return (string) $coverage
	// @access public
	// @see $coverage
	//-------------------------------------------------
	function getCoverage() {
		return (string) $this->coverage;
	} // end function

	//-------------------------------------------------
	// Returns $contributor variable
	//-------------------------------------------------
	// @desc Returns $contributor variable
	// @return (string) $contributor
	// @access public
	// @see $contributor
	//-------------------------------------------------
	function getContributor() {
		return (string) $this->contributor;
	} // end function

	//-------------------------------------------------
	// Returns $image_link variable
	//-------------------------------------------------
	// @desc Returns $image_link variable
	// @return (string) $image_link
	// @access public
	// @see $image_link
	//-------------------------------------------------
	function getImageLink() {
		return (string) $this->image_link;
	} // end function

	//-------------------------------------------------
	// Returns $period variable
	//-------------------------------------------------
	// @desc Returns $period variable
	// @return (string) $period
	// @access public
	// @see $period
	//-------------------------------------------------
	function getPeriod() {
		return (string) $this->period;
	} // end function

	//-------------------------------------------------
	// Returns $frequency variable
	//-------------------------------------------------
	// @desc Returns $frequency variable
	// @return (string) $frequency
	// @access public
	// @see $frequency
	//-------------------------------------------------
	function getFrequency() {
		return (int) $this->frequency;
	} // end function

	//-------------------------------------------------
	// Returns $base variable
	//-------------------------------------------------
	// @desc Returns $base variable
	// @return (string) $base
	// @access public
	// @see $base
	//-------------------------------------------------
	function getBase() {
		return (string) $this->base;
	} // end function

	//-------------------------------------------------
	// Returns $category variable
	//-------------------------------------------------
	// @desc Returns $category variable
	// @return (string) $category
	// @access public
	// @see $category
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function getCategory() {
		return (string) $this->category;
	} // end function

	//-------------------------------------------------
	// Returns $cache variable
	//-------------------------------------------------
	// @desc Returns $cache variable
	// @return (int) $cache
	// @access public
	// @see $cache
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function getCache() {
		return (int) $this->cache;
	} // end function

	//-------------------------------------------------
	// Adds another rss item to the object
	//-------------------------------------------------
	// @desc Adds another rss item to the object
	// @param (string) $about  URL
	// @param (string) $title
	// @param (string) $link  URL
	// @param (string) $description (optional)
	// @param (string) $subject  some sort of category (optional dc value - only shows up if DC data has been set before)
	// @param (string) $date  format: 2003-05-29T00:03:07+0200 (optional dc value - only shows up if DC data has been set before)
	// @return (void)
	// @access public
	// @see $items
	// @uses RSSItem
	//-------------------------------------------------
	function addItem($about = '',
		$title = '',
		$link = '',
		$description = '',
		$subject = '',
		$date = '',
		$author = '',
		$comments = '') {
		$item = new RSSItem($about,
			$title,
			$link,
			$description,
			$subject,
			$date,
			$author = '',
			$comments = '');
		$this->items[] = $item;
	} // end function

	//-------------------------------------------------
	// Deletes a rss item from the array
	//-------------------------------------------------
	// @desc Deletes a rss item from the array
	// @param (int) $id  id of the element in the $items array
	// @return (boolean) true if item was deleted
	// @access public
	// @see $items
	//-------------------------------------------------
	function deleteItem($id = -1) {
		if (array_key_exists($id, $this->items)) {
			unset($this->items[$id]);
			return (boolean) true;
		} else {
			return (boolean) false;
		} // end if
	} // end function

	//-------------------------------------------------
	// Returns an array with all the keys of the $items array
	//-------------------------------------------------
	// @desc Returns an array with all the keys of the $items array
	// @return (array) array with all the keys of the $items array
	// @access public
	// @see $items
	//-------------------------------------------------
	function getItemList() {
		return (array) array_keys($this->items);
	} // end function

	//-------------------------------------------------
	// Returns the $items array
	//-------------------------------------------------
	// @desc Returns the $items array
	// @return (array) $items
	// @access public
	//-------------------------------------------------
	function getItems() {
		return (array) $this->items;
	} // end function

	//-------------------------------------------------
	// Returns a single rss item by ID
	//-------------------------------------------------
	// @desc Returns a single rss item by ID
	// @param (int) $id  id of the element in the $items array
	// @return (mixed) RSSItem or false
	// @access public
	// @see RSSItem
	//-------------------------------------------------
	function getItem($id = -1) {
		if (array_key_exists($id, $this->items)) {
			return (object) $this->items[$id];
		} else {
			return (boolean) false;
		} // end if
	} // end function

	//-------------------------------------------------
	// creates the output based on the 0.91 rss version
	//-------------------------------------------------
	// @desc creates the output based on the 0.91 rss version
	// @return (void)
	// @access private
	// @see $output
	//-------------------------------------------------
	function createOutputV090() {
		// not implemented
		$this->createOutputV100();
	} // end function

	//-------------------------------------------------
	// creates the output based on the 0.91 rss version
	//-------------------------------------------------
	// @desc creates the output based on the 0.91 rss version
	// @return (void)
	// @access private
	// @see $output
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function createOutputV091() {
		$this->output = (string) '<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
		$this->output .= (string) '<rss version="0.91">' . "\n";
		$this->output .= (string) '<channel>' . "\n";

		if (strlen($this->rights) > 0) {
			$this->output .= (string) '<copyright>' . $this->rights . '</copyright>' . "\n";
		} // end if

		if (strlen($this->date) > 0) {
			$this->output .= (string) '<pubDate>' . $this->date . '</pubDate>' . "\n";
			$this->output .= (string) '<lastBuildDate>' . $this->date . '</lastBuildDate>' . "\n";
		} // end if

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<docs>' . $this->about . '</docs>' . "\n";
		} // end if

		if (strlen($this->description) > 0) {
			$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
		} // end if

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
		} // end if

		if (strlen($this->title) > 0) {
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
		} // end if

		if (strlen($this->image_link) > 0) {
			$this->output .= (string) '<image>' . "\n";
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
			$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
			if (strlen($this->description) > 0) {
				$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
			} // end if
			$this->output .= (string) '</image>' . "\n";
		} // end if

		if (strlen($this->publisher) > 0) {
			$this->output .= (string) '<managingEditor>' . $this->publisher . '</managingEditor>' . "\n";
		} // end if

		if (strlen($this->creator) > 0) {
			$this->output .= (string) '<webMaster>' . $this->creator . '</webMaster>' . "\n";
		} // end if

		if (strlen($this->language) > 0) {
			$this->output .= (string) '<language>' . $this->language . '</language>' . "\n";
		} // end if

		if (count($this->getItemList()) > 0) {
			foreach ($this->getItemList() AS $id) {
				$item = &$this->items[$id];

				if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
					$this->output .= (string) '<item>' . "\n";
					$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
					$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";
					if (strlen($item->getDescription()) > 0) {
						$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
					} // end if
					$this->output .= (string) '</item>' . "\n";
				} // end if
			} // end foreach
		} // end if

		$this->output .= (string) '</channel>' . "\n";
		$this->output .= (string) '</rss>' . "\n";
	} // end function

	//-------------------------------------------------
	// creates the output based on the 1.0 rss version
	//-------------------------------------------------
	// @desc creates the output based on the 1.0 rss version
	// @return (void)
	// @access private
	// @see $output
	//-------------------------------------------------
	function createOutputV100() {
		$this->output = (string) '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ';

		if ($this->use_dc_data === true) {
			$this->output .= (string) 'xmlns:dc="http://purl.org/dc/elements/1.1/" ';
		} // end if

		if ($this->use_sy_data === true) {
			$this->output .= (string) 'xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" ';
		} // end if

		$this->output .= (string) 'xmlns="http://purl.org/rss/1.0/">' . "\n";

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<channel rdf:about="' . $this->about . '">' . "\n";
		} else {
			$this->output .= (string) '<channel>' . "\n";
		} // end if

		if (strlen($this->title) > 0) {
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
		} // end if

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
		} // end if

		if (strlen($this->description) > 0) {
			$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
		} // end if

		// additional dc data
		if (strlen($this->publisher) > 0) {
			$this->output .= (string) '<dc:publisher>' . $this->publisher . '</dc:publisher>' . "\n";
		} // end if

		if (strlen($this->creator) > 0) {
			$this->output .= (string) '<dc:creator>' . $this->creator . '</dc:creator>' . "\n";
		} // end if

		if (strlen($this->date) > 0) {
			$this->output .= (string) '<dc:date>' . $this->date . '</dc:date>' . "\n";
		} // end if

		if (strlen($this->language) > 0) {
			$this->output .= (string) '<dc:language>' . $this->language . '</dc:language>' . "\n";
		} // end if

		if (strlen($this->rights) > 0) {
			$this->output .= (string) '<dc:rights>' . $this->rights . '</dc:rights>' . "\n";
		} // end if

		if (strlen($this->coverage) > 0) {
			$this->output .= (string) '<dc:coverage>' . $this->coverage . '</dc:coverage>' . "\n";
		} // end if

		if (strlen($this->contributor) > 0) {
			$this->output .= (string) '<dc:contributor>' . $this->contributor . '</dc:contributor>' . "\n";
		} // end if

		// additional SY data
		if (strlen($this->period) > 0) {
			$this->output .= (string) '<sy:updatePeriod>' . $this->period . '</sy:updatePeriod>' . "\n";
		} // end if

		if (strlen($this->frequency) > 0) {
			$this->output .= (string) '<sy:updateFrequency>' . $this->frequency . '</sy:updateFrequency>' . "\n";
		} // end if

		if (strlen($this->base) > 0) {
			$this->output .= (string) '<sy:updateBase>' . $this->base . '</sy:updateBase>' . "\n";
		} // end if

		if (strlen($this->image_link) > 0) {
			$this->output .= (string) '<image rdf:resource="' . $this->image_link . '" />' . "\n";
		} // end if

		if (strlen($this->image_link) > 0) {
			$this->output .= (string) '<image rdf:about="' . $this->image_link . '">' . "\n";
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
			$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
			if (strlen($this->description) > 0) {
				$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
			} // end if
			$this->output .= (string) '</image>' . "\n";
		} // end if

		if (count($this->getItemList()) > 0) {
			$this->output .= (string) '<items><rdf:Seq>' . "\n";
			foreach ($this->getItemList() as $id) {
				$item = &$this->items[$id];
				if (strlen($item->getAbout()) > 0) {
					$this->output .= (string) ' <rdf:li resource="' . $item->getAbout() . '" />' . "\n";
				} // end if
			} // end foreach
			$this->output .= (string) '</rdf:Seq></items>' . "\n";
		} // end if
		$this->output .= (string) '</channel>' . "\n";

		if (count($this->getItemList()) > 0) {
			foreach ($this->getItemList() as $id) {
				$item = &$this->items[$id];

				if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
					if (strlen($item->getAbout()) > 0) {
						$this->output .= (string) '<item rdf:about="' . $item->getAbout() . '">' . "\n";
					} else {
						$this->output .= (string) '<item>' . "\n";
					} // end if

					$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
					$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";

					if (strlen($item->getDescription()) > 0) {
						$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
					} // end if

					if ($this->use_dc_data === true && strlen($item->getSubject()) > 0) {
						$this->output .= (string) '<dc:subject>' . $item->getSubject() . '</dc:subject>' . "\n";
					} // end if

					if ($this->use_dc_data === true && strlen($item->getDate()) > 0) {
						$this->output .= (string) '<dc:date>' . $item->getDate() . '</dc:date>' . "\n";
					} // end if

					$this->output .= (string) '</item>' . "\n";
				} // end if
			} // end foreach
		} // end if

		$this->output .= (string) '</rdf:RDF>';
	} // end function

	//-------------------------------------------------
	// creates the output based on the 2.0 rss draft
	//-------------------------------------------------
	// @desc creates the output based on the 0.91 rss draft
	// @return (void)
	// @access private
	// @see $output
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function createOutputV200() {
		// not implemented
		$this->createOutputV100();
		//---------------------
		$this->output = (string) '<rss version="2.0">' . "\n";
		$this->output .= (string) '<channel>' . "\n";

		if (strlen($this->rights) > 0) {
			$this->output .= (string) '<copyright>' . $this->rights . '</copyright>' . "\n";
		} // end if

		if (strlen($this->date) > 0) {
			$this->output .= (string) '<pubDate>' . $this->date . '</pubDate>' . "\n";
			//xuanyan 2007.5.8 edit
			//$this->output .= (string) '<lastBuildDate>' .$this->date . '</lastBuildDate>' . "\n";
		} // end if

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<docs>' . $this->about . '</docs>' . "\n";
		} // end if

		if (strlen($this->description) > 0) {
			$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
		} // end if

		if (strlen($this->about) > 0) {
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
		} // end if

		if (strlen($this->title) > 0) {
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
		} // end if

		if (strlen($this->image_link) > 0) {
			$this->output .= (string) '<image>' . "\n";
			$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
			$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
			$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
			if (strlen($this->description) > 0) {
				$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
			} // end if
			$this->output .= (string) '</image>' . "\n";
		} // end if

		if (strlen($this->publisher) > 0) {
			$this->output .= (string) '<managingEditor>' . $this->publisher . '</managingEditor>' . "\n";
		} // end if

		if (strlen($this->creator) > 0) {
			//xuanyan 2007.5.8 edit
			//$this->output .= (string) '<webMaster>' . $this->creator . '</webMaster>' . "\n";
			$this->output .= (string) '<generator>' . $this->creator . '</generator>' . "\n";
		} // end if

		if (strlen($this->language) > 0) {
			$this->output .= (string) '<language>' . $this->language . '</language>' . "\n";
		} // end if

		if (strlen($this->category) > 0) {
			$this->output .= (string) '<category>' . $this->category . '</category>' . "\n";
		} // end if

		if (strlen($this->cache) > 0) {
			$this->output .= (string) '<ttl>' . $this->cache . '</ttl>' . "\n";
		} // end if

		if (count($this->getItemList()) > 0) {
			foreach ($this->getItemList() as $id) {
				$item = &$this->items[$id];

				if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
					$this->output .= (string) '<item>' . "\n";
					$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
					$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";

					if (strlen($item->getDescription()) > 0) {
						$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
					} // end if

					if ($this->use_dc_data === true && strlen($item->getSubject()) > 0) {
						$this->output .= (string) '<category>' . $item->getSubject() . '</category>' . "\n";
					} // end if

					if ($this->use_dc_data === true && strlen($item->getDate()) > 0) {
						$this->output .= (string) '<pubDate>' . $item->getDate() . '</pubDate>' . "\n";
					} // end if

					if (strlen($item->getAbout()) > 0) {
						$this->output .= (string) '<guid>' . $item->getAbout() . '</guid>' . "\n";
					} // end if

					if (strlen($item->getAuthor()) > 0) {
						$this->output .= (string) '<author>' . $item->getAuthor() . '</author>' . "\n";
					} // end if

					if (strlen($item->getComments()) > 0) {
						$this->output .= (string) '<comments>' . $item->getComments() . '</comments>' . "\n";
					} // end if

					$this->output .= (string) '</item>' . "\n";
				} // end if
			} // end foreach
		} // end if

		$this->output .= (string) '</channel>' . "\n";
		$this->output .= (string) '</rss>' . "\n";
	} // end function

	//-------------------------------------------------
	// creates the output
	//-------------------------------------------------
	// @desc creates the output
	// @return (void)
	// @access private
	// @uses createOutputV100()
	//-------------------------------------------------
	function createOutput($version = '') {
		if (strlen(trim($version)) === 0) {
			$version = (string) '1.0';
		} // end if

		switch ($version) {
		case '0.9':
			$this->createOutputV090();
			break;
		case '0.91':
			$this->createOutputV091();
			break;
		case '2.00':
			$this->createOutputV200();
			break;
		case '1.0':
		default:
			$this->createOutputV100();
			break;
		} // end switch
	} // end function

	//-------------------------------------------------
	// echos the output
	//-------------------------------------------------
	// use this function if you want to directly output the rss stream
	//-------------------------------------------------
	// @desc echos the output
	// @return (void)
	// @access public
	// @uses createOutput()
	//-------------------------------------------------
	function outputRSS($version = '') {
		if (!isset($this->output)) {
			$this->createOutput($version);
		} // end if
		//        header('Content-Disposition: inline; filename=rss_' . str_replace(' ', '', $this->title) . '.xml');
		$this->output = '<' . '?xml version="1.0" encoding="' . $this->encoding . '"?' . '>' . "\n" .
		'<!--  RSS generated  [' . date('Y-m-d H:i:s') . ']  -->' . "\n" . $this->output;
		echo $this->output;
	} // end function

	//-------------------------------------------------
	// returns the output
	//-------------------------------------------------
	// use this function if you want to have the output stream as a string (for example to write it in a cache file)
	//-------------------------------------------------
	// @desc returns the output
	// @return (void)
	// @access public
	// @uses createOutput()
	//-------------------------------------------------
	function getRSSOutput($version = '') {
		if (!isset($this->output)) {
			$this->createOutput($version);
		} // end if

		return (string) '<' . '?xml version="1.0" encoding="' . $this->encoding . '"?' . '>' . "\n" .
		'<!--  RSS generated by ' . APP_NAME . ' ' . APP_VERSION . ' [' . date('Y-m-d H:i:s') . ']  --> ' . "\n" . $this->output;
	} // end function
} // end class RSSBuilder

//---------------------------------------------------------------------------

/*-----------------------------------------------------------------------*/
// single rss item object
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc single rss item object
// @access private
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/
class RSSItem extends RSSBase {
	/*-----------------------------------------------------------------------*/
	/* V A R I A B L E S */
	/*-----------------------------------------------------------------------*/

	//-------------------------------------------------
	// URL
	//-------------------------------------------------
	// @desc URL
	// @var string
	// @access private
	//-------------------------------------------------
	var $about;

	//-------------------------------------------------
	// headline
	//-------------------------------------------------
	// @desc headline
	// @var string
	// @access private
	//-------------------------------------------------
	var $title;

	//-------------------------------------------------
	// URL to the full item
	//-------------------------------------------------
	// @desc URL to the full item
	// @var string
	// @access private
	//-------------------------------------------------
	var $link;

	//-------------------------------------------------
	// optional description
	//-------------------------------------------------
	// @desc optional description
	// @var string
	// @access private
	//-------------------------------------------------
	var $description;

	//-------------------------------------------------
	// optional subject (category)
	//-------------------------------------------------
	// @desc optional subject (category)
	// @var string
	// @access private
	//-------------------------------------------------
	var $subject;

	//-------------------------------------------------
	// optional date
	//-------------------------------------------------
	// @desc optional date
	// @var string
	// @access private
	//-------------------------------------------------
	var $date;

	//-------------------------------------------------
	// author of item
	//-------------------------------------------------
	// @desc author of item
	// @var string
	// @access private
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	var $author;

	//-------------------------------------------------
	// url to comments page (rss 2.0)
	//-------------------------------------------------
	// @desc url to comments page (rss 2.0)
	// @var string
	// @access private
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	var $comments;

	/*-----------------------*/
	/* C O N S T R U C T O R */
	/*-----------------------*/

	//-------------------------------------------------
	// Constructor
	//-------------------------------------------------
	// @desc Constructor
	// @param (string) $about  URL
	// @param (string) $title
	// @param (string) $link  URL
	// @param (string) $description (optional)
	// @param (string) $subject  some sort of category (optional)
	// @param (string) $date  format: 2003-05-29T00:03:07+0200 (optional)
	// @return (void)
	// @uses setAbout(), setTitle(), setLink(), setDescription(), setSubject(), setDate(), setAuthor(), setComments()
	// @access private
	//-------------------------------------------------
	function RSSItem($about = '',
		$title = '',
		$link = '',
		$description = '',
		$subject = '',
		$date = '',
		$author = '',
		$comments = '') {
		$this->setAbout($about);
		$this->setTitle($title);
		$this->setLink($link);
		$this->setDescription($description);
		$this->setSubject($subject);
		$this->setDate($date);
		$this->setAuthor($author);
		$this->setComments($comments);
	} // end constructor

	//-------------------------------------------------
	// Sets $about variable
	//-------------------------------------------------
	// @desc Sets $about variable
	// @param (string) $about
	// @return (void)
	// @access private
	// @see $about
	//-------------------------------------------------
	function setAbout($about = '') {
		if (!isset($this->about) && strlen(trim($about)) > 0) {
			$this->about = (string) trim($about);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $title variable
	//-------------------------------------------------
	// @desc Sets $title variable
	// @param (string) $title
	// @return (void)
	// @access private
	// @see $title
	//-------------------------------------------------
	function setTitle($title = '') {
		if (!isset($this->title) && strlen(trim($title)) > 0) {
			$this->title = (string) trim($title);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $link variable
	//-------------------------------------------------
	// @desc Sets $link variable
	// @param (string) $link
	// @return (void)
	// @access private
	// @see $link
	//-------------------------------------------------
	function setLink($link = '') {
		if (!isset($this->link) && strlen(trim($link)) > 0) {
			$this->link = (string) trim($link);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $description variable
	//-------------------------------------------------
	// @desc Sets $description variable
	// @param (string) $description
	// @return (void)
	// @access private
	// @see $description
	//-------------------------------------------------
	function setDescription($description = '') {
		if (!isset($this->description) && strlen(trim($description)) > 0) {
			$this->description = (string) trim($description);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $subject variable
	//-------------------------------------------------
	// @desc Sets $subject variable
	// @param (string) $subject
	// @return (void)
	// @access private
	// @see $subject
	//-------------------------------------------------
	function setSubject($subject = '') {
		if (!isset($this->subject) && strlen(trim($subject)) > 0) {
			$this->subject = (string) trim($subject);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $date variable
	//-------------------------------------------------
	// @desc Sets $date variable
	// @param (string) $date
	// @return (void)
	// @access private
	// @see $date
	//-------------------------------------------------
	function setDate($date = '') {
		if (!isset($this->date) && strlen(trim($date)) > 0) {
			$this->date = (string) trim($date);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $author variable
	//-------------------------------------------------
	// @desc Sets $author variable
	// @param (string) $author
	// @return (void)
	// @access private
	// @see $author
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function setAuthor($author = '') {
		if (!isset($this->author) && strlen(trim($author)) > 0) {
			$this->author = (string) trim($author);
		} // end if
	} // end function

	//-------------------------------------------------
	// Sets $comments variable
	//-------------------------------------------------
	// @desc Sets $comments variable
	// @param (string) $comments
	// @return (void)
	// @access private
	// @see $comments
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function setComments($comments = '') {
		if (!isset($this->comments) && strlen(trim($comments)) > 0) {
			$this->comments = (string) trim($comments);
		} // end if
	} // end function

	//-------------------------------------------------
	// Returns $about variable
	//-------------------------------------------------
	// @desc Returns $about variable
	// @return (string) $about
	// @access public
	// @see $about
	//-------------------------------------------------
	function getAbout() {
		return (string) $this->about;
	} // end function

	//-------------------------------------------------
	// Returns $title variable
	//-------------------------------------------------
	// @desc Returns $title variable
	// @return (string) $title
	// @access public
	// @see $title
	//-------------------------------------------------
	function getTitle() {
		return (string) $this->title;
	} // end function

	//-------------------------------------------------
	// Returns $link variable
	//-------------------------------------------------
	// @desc Returns $link variable
	// @return (string) $link
	// @access public
	// @see $link
	//-------------------------------------------------
	function getLink() {
		return (string) $this->link;
	} // end function

	//-------------------------------------------------
	// Returns $description variable
	//-------------------------------------------------
	// @desc Returns $description variable
	// @return (string) $description
	// @access public
	// @see $description
	//-------------------------------------------------
	function getDescription() {
		return (string) $this->description;
	} // end function

	//-------------------------------------------------
	// Returns $subject variable
	//-------------------------------------------------
	// @desc Returns $subject variable
	// @return (string) $subject
	// @access public
	// @see $subject
	//-------------------------------------------------
	function getSubject() {
		return (string) $this->subject;
	} // end function

	//-------------------------------------------------
	// Returns $date variable
	//-------------------------------------------------
	// @desc Returns $date variable
	// @return (string) $date
	// @access public
	// @see $date
	//-------------------------------------------------
	function getDate() {
		return (string) $this->date;
	} // end function

	//-------------------------------------------------
	// Returns $author variable
	//-------------------------------------------------
	// @desc Returns $author variable
	// @return (string) $author
	// @access public
	// @see $author
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function getAuthor() {
		return (string) $this->author;
	} // end function

	//-------------------------------------------------
	// Returns $comments variable
	//-------------------------------------------------
	// @desc Returns $comments variable
	// @return (string) $comments
	// @access public
	// @see $comments
	// @since 1.001 - 2003/05/30
	//-------------------------------------------------
	function getComments() {
		return (string) $this->comments;
	} // end function
} // end class RSSItem

?>